
\chapter{Introduction}

In large companies, it is possible to have dozens or even hundreds of software projects underway at any given point in time. This kind of scale produces new challenges, as well as new opportunities for these companies. Both challenges and opportunities result from the need of the company to successfully understand and exploit their ownership of a "portfolio" of software projects. 

Project portfolio management provides various analyses, each of which will reveal one aspect of the project. With all analyses together, users can have a whole view of the projects, They can therefore understand the projects easier and make better decisions and practice.

Project Portfolio Management will help managers to:
\begin{itemize}
\item
easier to acquire brief understanding of the projects.
\item
identify outliers, either be exceptional or terrible.
\item
manage quality of the products.
\item
manage group setup.
\item
find the group for the new projects. find the best group, or the one have experience with similar projects.
\item
evaluate organization improvement, by comparing projects performance between time period.
\end{itemize}
Project Portfolio Management will help developers to:

\begin{itemize}
\item
better and easier understand the state of their projects.
\item
introduce healthy competition over the portfolio state, help them adopt good development practice.
\item
discover similar projects and/or groups within the company, where hides opportunities of experience exchange.
\end{itemize}
If a new-started project's analyses trends are similar to starting trends of an long-exists project, the new project will be likely to learn from the old project's experience, either bad experience that need to avoid, or good practice that worth to adopt.

However, to build up the portfolio is a great challenge. Both what data to show and how to show them are essential to successfully set up a portfolio that offer enough insight into the most interesting aspect of the projects without too much data overwhelming. Moreover, interesting things are various from different situation. Some setting may be common over projects and organization, but we don't believe there is a golden rule for all projects. So system should give users the capability to customize as their need.

\chapter{Related Work}
\section{Software Project Metric Measurement}
Agile development has been become a prevailing development method and many metric measurements have been developed to help manage project process and product quality.

\section{Multi-Project Management and Project Portfolio Management}
Effective multi-project management is now a major challenge in many companies. Many studies on Project Portfolio try to address it in different ways. Risk and cost are major factor to be considered in business model. It is reasonable and effective to manage projects in order to maximize the profit of the company.

However, when considering project's success rate, the numbers are usually given by managers or even just taken randomly. But this factor is actually predictable and measurable via software metric measurements. Study of project portfolio with software metrics together to acquire better management over multi-projects are far from plenty. 

\chapter{Software ICU}
\section{Internal benchmarking according to various software metrics}
\subsection{Internal Benchmarking of latest value}
Latest Values are important enough to be show separately because it represents the newest state of the project. We assign colors to latest value of the measures to indicate their performing.

\subsection{Internal Benchmarking of historical trend via spark-line}
Historical data of the metric measurement is as good as the latest one. It provides more information of the performance of the project over time. But in the same time it bring a great amount of data overwhelming as well. In order to reduce the historical data to an acceptable small but meaningful degree, we use spark-line to represent them. Then we assign colors to the spark-lines with several evaluation strategies: Stream Trend and Participation.

\subsubsection{Stream Trend Evaluation}

\subsubsection{Participation Evaluation}

\chapter{Implementation}
The system is implemented as a part of the Hackystat Framework. It utilize higher level data from Hackystat analysis to analyze projects performance.

\section{Hackystat Framework}
Hackystat is an open source framework for collection, analysis, visualization, interpretation, annotation, and dissemination of software development process and product data.

Hackystat users typically attach software 'sensors' to their development tools, which unobtrusively collect and send "raw" data about development to a web service called the Hackystat SensorBase for storage.

The SensorBase repository can be queried by other web services to form higher level abstractions of this raw data, and/or integrate it with other internet-based communication or coordination mechanisms, and/or generate visualizations of the raw data, abstractions, or annotations.

\subsection{Daily Project Data Analysis}
The DailyProjectData(DPD) service is one of Hackystat's most important fundamental analysis service. From the raw sensor data in the SensorBase repository, it creates various abstractions of sensor data associated with a single project for a single 24 hour period, which usually represents a simple software development metric in a single day.

\subsection{Telemetry Analysis}
The Telemetry service is another fundamental analysis of Hackystat. Based on data from DPD service, it supports the creation of trend lines that show how various characteristics of software development are changing over time. To support the work practices of different organizations, it provides a domain specific language that allows the creation of custom trend lines (called telemetry "streams") and their visualization together in a specific telemetry "chart". 

Telemetry streams support various numbers of parameters. User can use them to generate more specific streams. In our Project Portfolio Analysis, which based on Telemetry service, user can configure the parameters of each Telemetry analysis. More detail will be discuss in later part.

\section {Project Browser and Wicket}
Project Browser is a new web application interface to Hackystat service using Wicket Framework. Its goal is to simplify the usage of Hackystat service as well as provide better visualization over the analysis data.

Wicket is one of the dozens of Java web frameworks, but a outstanding one. It use HTML attributes to denote components, enabling easy editing with ordinary HTML editors. The internal object structure is similar to Swing, it give easy but powerful way to develop functionality on both server and client side.

\section {Project Portfolio}

\chapter{Experimental Design in Classroom Study}
We are going to evaluate this system in a classroom setting. The class contain 20 students. They are learning software development methods in the class and will use the system for about a month till the end of the semester. During this period, they work as small group of 3~4 people, and each group will work on 2 software projects.

We gather research data in two ways:
	1. We will monitor and log their usage of the system. From this data we can find out their frequency and habit of using the system. And compared with their performance of the project, we can analysis the helpfulness of the system in developer's aspect. 
	2. We will give out survey at the end of the semester to gather their opinions of the system. From this we can find out users' attitude towards the system. In additional, they may provide insightful suggestion to improve the system.

We will analyze this data along with the data from previous Hackystat studies.

\chapter{Conclusion}
